<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>


  <script>
    let config = {
      method: 'get',
      url: 'http://api.xiaohigh.com/goods'
    }

    // Promise.resolve(config)
    // .then(config => {
    //   return new Promise((resolve, reject) => {
    //     resolve({
    //       status: 200,
    //       statusText: 'ok',
    //       data: '成功',
    //       headers: {}
    //     })
    //   })
    // }).then(res => {
    //   console.log(res);
    // })

    //声明 axios 函数
    function axios() {

    }

    //为axios添加get方法
    axios.get = function () {
      //promise 示例
      let p = Promise.resolve({
        method: 'get',
        url: 'http://api.xiaohigh.com/goods'
      });

      return p.then(config => {
        //请求拦截器 成功回调
        console.log(config);
        //这里在拦截器中一定要返回配置对象
        return config;
      }).then(config => {
        //内部发送 AJAX 请求的函数 
        return new Promise((resolve, reject) => {
          //成功的情况
          // resolve({
          //   status: 200,
          //   statusText: 'OK',
          //   headers: {},
          //   data: {
          //     id: 1,
          //     title: '晚上聚餐',
          //     done: false
          //   }
          // });
          //失败的情况
          reject({
            code: "ERR_BAD_REQUEST",
            config: {},
            message: "Request failed with status code 404",
            name: "AxiosError"
          })
        })
      }).then(res => {
        //响应拦截器 成功回调
        console.log(res);
        return res.data;
      }, error => {
        //响应拦截器 失败回调
        console.log(error);
        throw error;
      })
    }

    async function fn() {
      //promise 形式
      // axios.get()
      // .then(response => {
      //   console.log(response);
      // }, error => {
      //   console.log(error);
      // })
      //async 和 await
      let res = await axios.get();
      console.log(res);
    }
    fn()





  </script>
</body>

</html>